package com.brave.base;

import com.alibaba.fastjson.JSONObject;

import java.util.*;

/**
 * PackageName:com.nodiot.util
 * CreateTime:2019/5/20 -19:48
 * Author:BraveKing
 * Params:
 **/
public class BaseService
{

    /**
     * 2019年5月28日 10:41:23
     * 成功返回, 成功操作提示
     * @return
     */
    public String success()
    {
        return this.success("");
    }

    /**
     * 2019年5月28日 10:40:39
     * 成功返回, 单点数据返回
     * @param obj
     * @return
     */
    public String success(Object obj)
    {
        Map<String, Object> resultMap = new HashMap<>(4);
        resultMap.put("rows", obj);
        JSONObject json = new JSONObject();
        if(obj instanceof Map || obj instanceof Collection)
        {
            json.put("data", obj);
        }else
        {
            json.put("data", resultMap);
        }
        json.put("code", 200);
        json.put("msg", "操作成功");
        return json.toJSONString();
    }

    /**
     * 2019年5月28日 10:40:23
     * 成功返回, 集合、分页类数据返回
     * @param total
     * @param data
     * @param <T>
     * @return
     */
    public <T> String success(long total, List<T> data)
    {
        JSONObject json = new JSONObject();
        json.put("data", data);
        json.put("code", "200");
        json.put("msg", "调用成功");
        json.put("total", total);
        json.put("rows", data.size());
        return json.toJSONString();
    }

    /**
     * 2019年5月28日 10:40:10
     * 异常操作返回, 无参无提示
     * @return
     */
    public String exception()
    {
        return this.exception("");
    }


    /**
     * 2019年8月23日 14:52:40
     * 传输参数出错
     * @param obj
     * @return
     */
    public String paramException(Object obj)
    {
        Map<String, Object> paramMap = new HashMap<>(2);
        Map<String, Object> resultMap = new HashMap<>(4);
        paramMap.put("rows", obj);
        resultMap.put("code", 300);
        resultMap.put("msg", "调用参数错误");
        resultMap.put("data", paramMap);
        return JSONObject.toJSONString(resultMap);
    }
    
    
    /**
     * 2019年6月4日 08:40:15
     * 异常操作返回, 带参提示, 用于测试环境, 返回前台异常信息
     * @param exception
     * @return
     */
    public String exception(String exception)
    {
        JSONObject json = new JSONObject();
        List<String> data = new ArrayList<>(2);
        data.add(exception);
        json.put("data", data);
        json.put("code", 500);
        json.put("msg", "服务器异常");
        json.put("total", 0);
        json.put("rows", 0);
        return json.toJSONString();
    }
}